import java.util.List;

//给你两个 非空 的链表，表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的，并且每个节点只能存储 一位 数字。
//
//请你将两个数相加，并以相同形式返回一个表示和的链表。
//
//你可以假设除了数字 0 之外，这两个数都不会以 0 开头。
public class test1 {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int t = 0;//表示进位
        int number=0;//表示当前节点的数
        ListNode newHead = new ListNode();
        ListNode flag = newHead;
        ListNode cur1 = l1;
        ListNode cur2 = l2;
        while (cur1!=null&&cur2!=null){
            t = cur1.val+cur2.val+t;
            number= t%10;
            if(t<10){
                t=0;
            }else{
                t/=10;
            }

            flag.next= new ListNode(number);
            flag=flag.next;
            cur1 = cur1.next;
            cur2=cur2.next;
        }
        //其中有一个为空
        while (cur1!=null){
            t = cur1.val+t;
            number= t%10;
            if(t<10){
                t=0;
            }else{
                t/=10;
            }
            flag.next= new ListNode(number);
            flag=flag.next;
            cur1=cur1.next;
        }
        while (cur2!=null){
            t = cur2.val+t;
            number= t%10;
            if(t<10){
                t=0;
            }else{
                t/=10;
            }
            flag.next= new ListNode(number);
            flag=flag.next;
            cur2=cur2.next;
        }
        //如果此时t还有数,就代表还要进位
        if(t!=0){
            flag.next= new ListNode(t);
        }
        return newHead.next;
    }
}
